home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / gfront11.lha / GUIFront / Demos / Source / reqtools.c < prev    next >
C/C++ Source or Header  |  1994-11-01  |  7KB  |  200 lines

  1.  
  2. /* ReqTools.c - The GUI of the 'ReqTools' preferences utility
  3.  *
  4.  * This is a GUIFront example GUI. To build an example, compile and link this
  5.  * file with Generic.o (also supplied).
  6.  * Everything prefixed with DEMO_ is exported to Generic.o.
  7.  */
  8.  
  9. #include <libraries/guifront.h>
  10.  
  11. /* First, some Gadget ID's */
  12.  
  13. enum
  14. {
  15.     GID_SCREENTOFRONT,
  16.     GID_USEDEFAULT,
  17.     GID_IMMEDIATESORT,
  18.     GID_DRAWERSFIRST,
  19.     GID_MIX,
  20.     GID_DISKLED,
  21.     GID_DEFAULTSFOR,
  22.     GID_SIZE,
  23.     GID_ENTRIESMIN,
  24.     GID_ENTRIESMAX,
  25.     GID_POSITION,
  26.     GID_OFFSETX,
  27.     GID_OFFSETY,
  28.     GID_SAVE,
  29.     GID_USE,
  30.     GID_CANCEL,
  31.     GID_GENERAL,
  32.     GID_FILEREQ,
  33.     GID_SIZETXT,
  34.     GID_NUMBERTXT,
  35. };
  36.  
  37. /* Some data and tag items we'll be needing later */
  38.  
  39. static const STRPTR defaultslabels[] =
  40. {
  41.     "File Requester",
  42.     "Font Requester",
  43.     "Palette Requester",
  44.     "Screen Mode Requester",
  45.     "Volume Requester",
  46.     "Other Requesters",
  47.     NULL,
  48. };
  49.  
  50. static const struct TagItem defaultstags[] =
  51. {
  52.     {GTCY_Labels, defaultslabels},
  53.     {TAG_DONE},
  54. };
  55.  
  56. static const STRPTR positionlabels[] =
  57. {
  58.     "Mouse Pointer",
  59.     "Center in Window",
  60.     "Center on Screen",
  61.     "Top left of Window",
  62.     "Top left of Screen",
  63.     NULL,
  64. };
  65.  
  66. static const struct TagItem positiontags[] =
  67. {
  68.     {GTCY_Labels, positionlabels},
  69.     {TAG_DONE},
  70. };
  71.  
  72. static const struct TagItem sizetags[] =
  73. {
  74.     {GTSL_Min, 25},
  75.     {GTSL_Max, 100},
  76.     {TAG_DONE},
  77. };
  78.  
  79. /* Now, the GadgetSpec's we'll be needing for this GUI */
  80.  
  81. static GadgetSpec gadgetspecs[] =
  82. {
  83.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"_Pop screen to front",NULL,GID_SCREENTOFRONT, PLACETEXT_RIGHT}, NULL, GS_DefaultTags},
  84.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"Us_e system default font",NULL,GID_USEDEFAULT, PLACETEXT_RIGHT}, NULL, GS_DefaultTags},
  85.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"_Immediate sort",NULL,GID_IMMEDIATESORT, PLACETEXT_RIGHT}, NULL, GS_DefaultTags},
  86.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"_Display drawers first",NULL,GID_DRAWERSFIRST, PLACETEXT_RIGHT}, NULL, GS_DefaultTags},
  87.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"Mi_x files and drawers",NULL,GID_MIX, PLACETEXT_RIGHT}, NULL, GS_DefaultTags},
  88.     {CHECKBOX_KIND, 0,0, {0,0,0,0,"Di_sk activity LED",NULL,GID_DISKLED, PLACETEXT_RIGHT}, NULL, GS_DefaultTags},
  89.     {CYCLE_KIND,    0,0, {0,0,0,0,"De_faults for",NULL,GID_DEFAULTSFOR,PLACETEXT_LEFT | NG_HIGHLABEL},defaultstags,GS_DefaultTags},
  90.     {SLIDER_KIND,   0,0, {0,0,0,0,"70%",NULL,GID_SIZE,PLACETEXT_LEFT},sizetags,GS_DefaultTags},
  91.     {INTEGER_KIND,   4,0, {0,0,0,0,"_Minimum",NULL,GID_ENTRIESMIN,PLACETEXT_LEFT},NULL,GS_DefaultTags | GS_NoWidthExtend},
  92.     {INTEGER_KIND,   4,0, {0,0,0,0,"M_aximum",NULL,GID_ENTRIESMAX,PLACETEXT_LEFT},NULL,GS_DefaultTags | GS_NoWidthExtend},
  93.     {CYCLE_KIND,    0,0, {0,0,0,0,"P_osition:",NULL,GID_POSITION,PLACETEXT_LEFT},positiontags,GS_DefaultTags},
  94.     {INTEGER_KIND,   4,0, {0,0,0,0,"Offse_t:",NULL,GID_OFFSETX, PLACETEXT_LEFT},NULL,GS_DefaultTags | GS_NoWidthExtend},
  95.     {INTEGER_KIND,   4,0, {0,0,0,0,NULL,NULL,GID_OFFSETY, PLACETEXT_LEFT},NULL,GS_DefaultTags | GS_NoWidthExtend},
  96.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Save", NULL, GID_SAVE, PLACETEXT_IN}, NULL, GS_DefaultTags},
  97.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Use", NULL, GID_USE, PLACETEXT_IN}, NULL, GS_DefaultTags},
  98.     {BUTTON_KIND,   0,0, {0,0,0,0,"_Cancel", NULL, GID_CANCEL, PLACETEXT_IN}, NULL, GS_DefaultTags},
  99.     {TEXT_KIND,     0,0, {0,0,0,0,"General",NULL,GID_GENERAL,PLACETEXT_IN | NG_HIGHLABEL},NULL,GS_DefaultTags},
  100.     {TEXT_KIND,     0,0, {0,0,0,0,"File Requester",NULL,GID_FILEREQ,PLACETEXT_IN | NG_HIGHLABEL},NULL,GS_DefaultTags},
  101.     {TEXT_KIND,     0,0, {0,0,0,0,"Size (% of visible height):",NULL,GID_SIZETXT,PLACETEXT_IN  | NG_HIGHLABEL},NULL,GS_DefaultTags},
  102.     {TEXT_KIND,     0,0, {0,0,0,0,"Number of visible entries:",NULL,GID_NUMBERTXT,PLACETEXT_IN | NG_HIGHLABEL},NULL,GS_DefaultTags},
  103. };
  104.  
  105. /* Now, we group all of these GadgetSpecs into an array of pointers, so the
  106.  * layout engine can locate gadgets merely by their Gadget IDs.
  107.  */
  108.  
  109. GadgetSpec *DEMO_GadgetSpecList[] =
  110. {
  111.     &gadgetspecs[0], &gadgetspecs[1], &gadgetspecs[2], &gadgetspecs[2],
  112.     &gadgetspecs[3], &gadgetspecs[4], &gadgetspecs[5], &gadgetspecs[6],
  113.     &gadgetspecs[7], &gadgetspecs[8], &gadgetspecs[9], &gadgetspecs[10],
  114.     &gadgetspecs[11], &gadgetspecs[12], &gadgetspecs[13], &gadgetspecs[14],
  115.     &gadgetspecs[15], &gadgetspecs[16], &gadgetspecs[17], &gadgetspecs[18],
  116.     &gadgetspecs[19],
  117.     NULL,
  118. };
  119.  
  120. /* Finally, the layout tag list itself. This is where most of the work is
  121.  * done. This list completely describes how the above gadgets are arranged
  122.  * in groups in the GUI.
  123.  */
  124.  
  125. ULONG DEMO_LayoutList[] =
  126. {
  127.     GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  128.  
  129.     GUIL_HorizGroup, 1,
  130.         GUIL_Flags, GUILF_PropShare,
  131.  
  132.         GUIL_VertGroup, 1,
  133.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  134.             GUIL_GadgetSpecID, GID_GENERAL,
  135.             GUIL_GadgetSpecID, GID_SCREENTOFRONT,
  136.             GUIL_GadgetSpecID, GID_USEDEFAULT,
  137.  
  138.             GUIL_GadgetSpecID, GID_FILEREQ,
  139.             GUIL_GadgetSpecID, GID_IMMEDIATESORT,
  140.             GUIL_GadgetSpecID, GID_DRAWERSFIRST,
  141.             GUIL_GadgetSpecID, GID_MIX,
  142.             GUIL_GadgetSpecID, GID_DISKLED,
  143.         TAG_DONE,
  144.  
  145.         GUIL_VertGroup, 1,
  146.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  147.             GUIL_GadgetSpecID, GID_DEFAULTSFOR,
  148.  
  149.             GUIL_VertGroup, 1,
  150.                 GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  151.                 GUIL_FrameType, GUILFT_Recess,
  152.                 GUIL_GadgetSpecID, GID_SIZETXT,
  153.                 GUIL_GadgetSpecID, GID_SIZE,
  154.                 GUIL_GadgetSpecID, GID_NUMBERTXT,
  155.                 GUIL_VertGroup, 1,
  156.                     GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  157.                     GUIL_HorizGroup, 1,
  158.                         GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  159.                         GUIL_GadgetSpecID, GID_ENTRIESMIN,
  160.                         GUIL_GadgetSpecID, GID_ENTRIESMAX,
  161.                     TAG_DONE,
  162.                     GUIL_GadgetSpecID, GID_POSITION,
  163.                     GUIL_HorizGroup, 0,
  164.                         GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  165.                         GUIL_GadgetSpecID, GID_OFFSETX,
  166.                         GUIL_GadgetSpecID, GID_OFFSETY,
  167.                     TAG_DONE,
  168.                 TAG_DONE,
  169.             TAG_DONE,
  170.         TAG_DONE,
  171.     TAG_DONE,
  172.  
  173.     GUIL_HorizGroup, 1,
  174.         GUIL_Flags, GUILF_EqualSize | GUILF_EqualHeight,
  175.         GUIL_GadgetSpecID, GID_SAVE,
  176.         GUIL_GadgetSpecID, GID_USE,
  177.         GUIL_GadgetSpecID, GID_CANCEL,
  178.     TAG_DONE,
  179.  
  180.     TAG_DONE,
  181. };
  182.  
  183. /* Obligatory version tag */
  184.  
  185. static const char ver[] = "$VER: ReqTools 1.0 " __AMIGADATE__;
  186.  
  187. /* Now, some globals used by Generic.o during the call to GF_CreateGUIA() */
  188.  
  189. int DEMO_InitialOrientation = GUIL_VertGroup;
  190.  
  191. STRPTR DEMO_WindowTitle = "ReqTools Preferences' GUI";
  192. STRPTR DEMO_AppID       = "ReqTools";
  193.  
  194. STRPTR DEMO_Version     = "1.0",
  195.        DEMO_LongDesc    = "Demo program - ReqTools prefs editor",
  196.        DEMO_Author      = "Michael Berg",
  197.        DEMO_Date        = __AMIGADATE__;
  198.  
  199. BOOL   DEMO_Backfill    = FALSE;
  200.